
/**
 * @author 刘大可
 * @time 2020年7月14日16:23:01
 * @description  正则验证文字的格式
 * @version 1.0.0
 */

export = {
    /**
     *  @title 正则表达式
     *  @param email 邮箱地址
     *  @param phone 手机号
     *  @param phone_strict 中国手机号(严谨), 根据工信部2019年最新公布的手机号段
     *  @param phone_loose 中国手机号(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条
     *  @param account  账号4-10位数字或字母组成
     *  @param password  密码由6-16位数字或者字母组成
     *  @param passwords 复杂密码由6~20个字母、数字、下划线和减号组成且必须以字母、下划线或减号开头
     *  @param cname 中文姓名
     *  @param ename 英文姓名
     *  @param sex 性别
     *  @param video_url  匹配所有视频链接 
     *  @param id_card 身份证号, 支持1/2代(15位/18位数字)
     *  @param age 年龄 0~99岁
     */
    regular: {
        email: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
        phone: /^1[3456789]\d{9}$/,
        passwords: /^[-_a-zA-Z]{1}[-_a-zA-Z0-9]{5,19}$/,
        account: /^[0-9A-Za-z]{4,10}$/,
        password: /^[0-9A-Za-z]{6,16}$/,
        sex: /[/^男$|^女&/]/,
        cname: /[\u4E00-\u9FA5]+/,
        emane: /(^[a-zA-Z]{1}[a-zA-Zs]{0,20}[a-zA-Z]{1}$)/,
        video_url: /^https?:\/\/.*?(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4)$/i,
        phone_strict: /^1((3[\d])|(4[5,6,7,9])|(5[0-3,5-9])|(6[5-7])|(7[0-8])|(8[\d])|(9[1,8,9]))\d{8}$/,
        phone_loose: /^1\d{10}$/,
        id_card: /(^d{8}(0d|10|11|12)([0-2]d|30|31)d{3}$)|(^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/,
        age: /^\d{2}$/,
        order: /[^]/
    },
    /**
     * @title 整体验证类
     * @param options 需要验证的数组
     */
    verifys(options: any) {
        if (Array.isArray(options)) {
            for (let i = 0; i < options.length; i++) {
                const element = options[i];
                if (!this.verify(element)) {
                    return
                } else {

                }
            }
        } else {
            this.tips("请使用verify方法")
            return false
        }
        return true
    },
    /**
     * 
     * @param option 单独验证的配置
     * @value  需要验证的数据
     * @type 需要验证的类型，详见 regular
     * @max 最大长度
     * @key  传给后台的key 
     * @name  该字段的名称
     */
    verify(option: any) {
        const { value: text, type, max, key, name } = option
        let regular = this.regular[type]
        let tip = name ? name : key
        if (!text) {
            this.tips(tip + "不能为空")
            return false
        } else if (text.length > max) {
            this.tips(tip + "最小长度为" + max)
            return false
        } else if (!regular.test(text)) {
            this.tips(tip + "格式不正确")
            return false
        } else {
            console.log(tip + "验证成功");
        }
        return true
    },
    /**
     * @title 微信的提示
     * @param content 提示的内容
     */
    tips(content: string) {
        wx.showModal({
            title: '提示',
            content,
            showCancel: false,
            cancelColor: '#000000',
            confirmText: '确定',
            confirmColor: '#3CC51F'
        });

    }


}